package chapter05

/**
 * Created with IntelliJ IDEA.
 * ClassName: Test07_Collection
 * Package: chapter05
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 *          Date: 2023-06-20
 *          Time: 16:02
 */

object Test07_Collection {
  def main(args: Array[String]): Unit = {

    //在大数据处理当中 很多数据看成一个集合 相对集合做一些操作

    //将操作抽象 出来 传入操作
    //对数组进行处理 比如说 数组里面数据都*2 都+1等
    //处理完 返回一个新的数组

    //定义一个数组
    val arr: Array[Int] = Array(12, 45, 75, 98)
    //定义操作 aO第一个参数是一个array数组 Int类型,第二个参数是操作op 传进来的是函数
    //此函数 参数是Int 返回值也是Int 针对Array中的每个元素的
    //最后():Array[Int]得到一个新的数组
    def arrayOperation(array: Array[Int], op: Int => Int): Array[Int] = {
      //针对每一个array都有op操作 那么就是变量这个数组 执行op函数
      for (elem <- array) yield op(elem)
    }
    //定义一个加一操作
    def addOne(elem: Int): Int = {
      elem + 1
    }
    //调用
    val newArray:Array[Int] = arrayOperation(arr,addOne)
    //引用类型 调用mkString(",")元素逗号分割打印出来
    println(newArray.mkString(","))

    //匿名函数调用 所有数*2  函数至简原则
    val newArray1:Array[Int] = arrayOperation(arr,_ * 2)
    println(newArray1.mkString(","))

  }
}
